package com.wang.springbootinit.controller.admin;

import com.wang.springbootinit.common.BaseResponse;
import com.wang.springbootinit.common.ResultUtils;
import com.wang.springbootinit.model.entity.Evaluation;
import com.wang.springbootinit.model.vo.StatsVO;
import com.wang.springbootinit.service.EvaluationService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 评分管理接口
 */
@RestController
@RequestMapping("/admin/evaluation")
public class AdminEvaluationController {

    @Resource
    private EvaluationService evaluationService;

    /**
     * 获取统计信息
     * @return
     */
    @GetMapping("/stats")
    public BaseResponse<List<StatsVO>> getStats() {
        return ResultUtils.success(evaluationService.getStats());
    }

    /**
     * 创建评分项目
     * @param evaluation 评分信息
     * @return 创建的评分项目
     */
    @PostMapping("/add")
    public BaseResponse<Evaluation> createEvaluation(@RequestBody Evaluation evaluation) {
        return ResultUtils.success(evaluationService.createEvaluation(evaluation));
    }

    /**
     * 更新评分项目
     * @param evaluation 评分信息
     * @return 更新后的评分项目
     */
    @PostMapping("/update")
    public BaseResponse<Evaluation> updateEvaluation(@RequestBody Evaluation evaluation) {
        return ResultUtils.success(evaluationService.updateEvaluation(evaluation));
    }

    /**
     * 删除评分项目
     * @param id 评分项目ID
     * @return 是否删除成功
     */
    @PostMapping("/delete/{id}")
    public BaseResponse<Boolean> deleteEvaluation(@PathVariable Long id) {
        return ResultUtils.success(evaluationService.deleteEvaluation(id));
    }

    /**
     * 获取评分项目详情
     * @param id 评分项目ID
     * @return 评分项目信息
     */
    @GetMapping("/get/{id}")
    public BaseResponse<Evaluation> getEvaluation(@PathVariable Long id) {
        return ResultUtils.success(evaluationService.getEvaluation(id));
    }

    /**
     * 获取学期列表
     * @return 学期列表
     */
    @GetMapping("/getSemesterList}")
    public BaseResponse<List<String>> getSemesterList() {
        return ResultUtils.success(evaluationService.getEvaluation());
    }

    /**
     * 根据类型获取评分项目列表
     * @param type 评分类型
     * @return 评分项目列表
     */
    @GetMapping("/list/type/{type}")
    public BaseResponse<List<Evaluation>> getEvaluationsByType(@PathVariable Integer type) {
        return ResultUtils.success(evaluationService.getEvaluationsByType(type));
    }

    /**
     * 获取所有有效的评分项目
     * @return 评分项目列表
     */
    @GetMapping("/list")
    public BaseResponse<List<Evaluation>> listValidEvaluations() {
        return ResultUtils.success(evaluationService.listValidEvaluations());
    }


    /**
     * 获取所有有效的评分项目
     * @return 评分项目列表
     */
    @GetMapping("/getEvaluationNameList")
    public BaseResponse<List<HashMap<String, String>>> getEvaluationNameList() {
        return ResultUtils.success(evaluationService.getEvaluationNameList());
    }
} 